This invention relates to Computer systems and more particularly to methods of sharing data over Local Area Networks. Even more particularly, the invention relates to using co-routines in a file server host computer to provide file access services to a plurality of client computers over a Local Area Network.
A typical computer system is comprised of a processor, memory, and mass storage devices, such as hard disks. Large mainframe computers usually have many terminals attached wherein each user accesses the mainframe through one of the terminals. In smaller systems, such as engineering workstations and personal computers, the computer has a keyboard and display through which the user accesses the computer. Many different computers systems, each using a different processor, are in use today. Within each computer system, an operating system performs basic functions for the application software which actually performs the work for the user. MS-DOS is a typical operating system used in personal computers, whereas UNIX is an operating system that is used in personal computers, engineering work stations, and even large mainframes.
Originally users could only access data that was available on the mass storage device of the particular computer they were using. As the use of personal computers spread during the early 1980's, more and more users desired to access data that was located on other computers. Originally this access was done via very low speed communications links, such as RS/232. As the need for more data access between computers became greater, high speed Local Area Networks (LAN's) were developed. Local Area Networks are designed to transfer data at very high rates of speed, typically ten million bits per second, and are very suitable for sharing data between computers. With the high speed data transfer availability of Local Area Networks, the sharing of other resources, such as a common printer, became possible.
A resource sharing computer system typically consists of a host computer connected to a Local Area Network. The LAN is also connected to a series of client computers, each of which use the common resources of the host computer. Usually a client computer will use the disk of the host computer to store all of its data. The client computer will also use the printers and other common resources located on the host computer. In order to provide these services, the host computer must have resource sharing software which performs the desired services for the client computers. For example, several client computers might send print data to the host computer, and software within the host computer must keep the print data from each client computer separate.
When the client computers are running a small operating system, such as MS-DOS, and the number of client computers is small, the workload on the host computer is also small and a simple file serving system will suffice. However, as the number of client computers increases, and these computers run multi-tasking operating systems, such as UNIX or OS/2, the workload on the host system increases significantly. As this workload increases, particularly with client computers having multi-tasking operating systems capable of sending multiple requests concurrently, the performance requirements of the host server becomes significant.
Another problem with host server systems, is that they must be designed to be capable of running on many different host processors. Ideally, a host server program would be capable of running on all machines capable of being used as a host computer. To provide this portability, the host server software must be easily moved from one machine type to another, and it must run without modifying the operating system of the host computer.
Another problem that often arises in the design of host resource-sharing systems, is that the number of files needing to be accessed by the server exceeds the capability of a single process on the host computer system. Therefore, the host server must be split into multiple processes, each serving some subset of the client computer systems.
It is thus apparent that there is need in the art for an improved host resource server that will provide a high-performance response to a large number of client computers over a Local Area Network. There is also a need in the art for such a system that is capable of processing a plurality of simultaneous requests from each client computer. There is also a need in the art for such a system that runs without modifying the host computer operating system. There is a further need for such a system which is highly portable between several types of host computer processors. Still another need is for such a system that is highly portable between several computer programming languages. A still further need is for such a system that will allow access to a very large number of files on the host computer system.